package lesson02;

/**
 * 通过标志位完成线程中断
 * @author wileda
 * @date 2023/01/05  10:06
 */
public class Demo05 {
    //是否中断的标志位
    private static boolean isQuit = false;

    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(() -> {
            // 每次执行都判断一下是否中断的标志位
            while (!isQuit) {
                System.out.println("hello thread...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程执行完成...");
        });

        System.out.println("启动之前线程状态：" + thread.getState());
        System.out.println("启动之前是否存活：" + thread.isAlive());
        // 启动线程
        thread.start();
        System.out.println("启动之后线程状态：" + thread.getState());
        System.out.println("启动之后是否存活：" + thread.isAlive());

        // 先让这个线程执行一会
        Thread.sleep(5000);
        // 修改标志位
        isQuit = true; // 可以接收一个参数
        // 等线程销毁
        Thread.sleep(1000);
        System.out.println("中断之后线程状态：" + thread.getState());
        System.out.println("中断之后是否存活：" + thread.isAlive());



    }
}
